Skip to content

feat(cli,contract): --reviewer and --qa on ceki contract create#7

Open
iWedmak wants to merge 6 commits into
masterfrom
feature/2465-contract-create-reviewer-qa
Open

feat(cli,contract): --reviewer and --qa on ceki contract create#7
iWedmak wants to merge 6 commits into
masterfrom
feature/2465-contract-create-reviewer-qa

Conversation

@iWedmak

@iWedmak iWedmak commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Summary

Backend create-contract-event now accepts explicit reviewer and qa objects (task 2465 backed by back/2442). Without them the event stays a clean Hand role. Expose the same surface on the CLI + SDK:

  • ceki contract create CID --benefitable agent:N --reviewer agent:M --qa agent:K attaches both roles.
  • --reviewer / --qa accept the same agent:N / user:N form as --benefitable.
  • They are only forwarded into the payload when supplied; omitted = clean Hand (no auto-attach).
  • ContractClient.create() gets the matching reviewer= / qa= kwargs.

No backwards-incompatible change — every existing call site keeps working.

Test plan

  • ruff check . — All checks passed
  • pytest tests/test_contract.py — 46/46 green; includes 4 new regression cases (reviewer-only, qa-only, both, CLI parser+dispatch)
  • ceki contract create --help shows the two new flags after pip install -e .
  • reviewer: re-verify against a real contract once merged

iWedmak and others added 6 commits June 24, 2026 12:46
Backend create-contract-event now accepts explicit reviewer/qa objects
({type, value}); without them the event stays a clean Hand. Expose the
same surface on the CLI + SDK: matching shape to --benefitable
(agent:N / user:N), only forwarded into the payload when supplied.

Tests: regression cases for the contract client (reviewer-only, qa-only,
both, neither) plus a CLI parser dispatch case wiring all three through.
Backend moved role pivots into a single participants array of
{value, type, role_id} items (reviewer -> role 5, qa -> role 6).
Drop the old top-level reviewer/qa keys, keep --reviewer / --qa
on the CLI as the human-facing shortcut, and add a repeatable
--participant for arbitrary roles.

Version bumped to 2.27.0 - wire format is breaking.
`propose --desc` was being used as a progress report, but the backend
treats --desc as the event description — agents were silently wiping
the spec. Add a dedicated `progress` command that wraps a status
correction (optional --status) and a comment in one call, leaving the
event description untouched.

`propose` semantics are unchanged. SKILL.md updated to recommend
`progress` for status+report; `propose` stays for pure field
corrections.

Version bumped to 2.28.0.
Backend rejects comment events without a `label` ("The label field is
required"). The bare `progress` call hit this on first dogfood. Derive
a short label from the first line of --desc (capped at 60 chars); fall
back to "progress" if desc is empty. The full --desc still goes into
`description` untouched.
Backend rejects {value, type, role_id} with 422 — the wire shape per
EventController validation rules is {participable_id, participable_type,
role_id}. role_id mapping (reviewer=5, qa=6) is unchanged.

Unit tests previously asserted the wrong shape; regression guard
test_create_participants_uses_participable_id_keys() now pins the
correct keys. Patch bump to 2.28.1.
Backend renamed the role-attachment array field from `participants` to
`users` (sync with back/2542). Element shape stays
{participable_id, participable_type, role_id}. CLI flag --participant
keeps its name — it is the human-facing word; only the wire key moves.

Regression guard test_create_uses_users_field_not_participants pins the
field name. Minor bump to 2.29.0.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant